var arr = ['a', 'a', 'a', '*', 'b', 'b', '*', 'c', 'c', 'c', 'c', '*', 'd', 'd', 'd', 'd', 'd', 'd', 'd'];

// 期待输出: ['aaa', 'bb', 'cccc', 'ddddddd']

var tmp = '';
var result = [];
// 数组最后一项不是*就加一个*
if (arr[arr.length - 1] !== '*') {
    arr.push('*'); // 用于触发记录动作
}
for (var i = 0; i < arr.length; i++) {
    var letter = arr[i];
    // 遇到*就把工具人记录在结果数组中，然后无情置空工具人 并且跳过本轮循环
    // 但是调试代码发现把'ddddddd'给丢了，所以最开始把原数组arr再加一个*用于触发记录动作就可以了
    if (letter === '*') {
        result.push(tmp);
        tmp = '';
        continue;
    }
    tmp += letter;
}
console.log(result);

